package com.liqi.device.mapper;

import com.liqi.device.domain.DvGroup;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;
import java.util.Map;

/**
 * 分组Mapper接口
 * 
 * @author Lwy
 * @date 2022-03-28
 */
@Mapper
public interface DvGroupMapper 
{
    /**
     * 查询分组
     * 
     * @param id 分组主键
     * @return 分组
     */
    public DvGroup selectDvGroupById(Long id);

    /**
     * 查询分组列表
     * 
     * @param dvGroup 分组
     * @return 分组集合
     */
    public List<DvGroup> selectDvGroupList(DvGroup dvGroup);
    /**
     * 通过上级id查询分组列表
     *
     * @param parentId 上级id
     * @return 分组集合
     */
    public List<DvGroup> selectDvGroupByParentId(Long parentId);

    /**
     * 新增分组
     * 
     * @param dvGroup 分组
     * @return 结果
     */
    public int insertDvGroup(DvGroup dvGroup);
    
    /**
     * 修改分组
     * 
     * @param dvGroup 分组
     * @return 结果
     */
    public int updateDvGroup(DvGroup dvGroup);

    /**
     * 删除分组
     * 
     * @param id 分组主键
     * @return 结果
     */
    public int deleteDvGroupById(Long id);

    /**
     * 批量删除分组
     * 
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteDvGroupByIds(Long[] ids);
    public int deleteDvGroupByAncestors(Long id);

    /**
     * 查询分组列表 用于投放设备下拉框
     *
     * @param dvGroup 分组
     * @return 分组集合
     */
    public List<DvGroup> selectDvGroupListForDevice(DvGroup dvGroup);


    Integer getByName(@Param("name") String name, @Param("id") Long id);

    List<Map<String, String>> getGrouplist(@Param("regionCode") Long regionCode, @Param("parentCode") Long parentCode);

}
